/*
* INSANE - Interactive Structural Analysis Environment
*
* Copyright (C) 2003-2005
* Universidade Federal de Minas Gerais
* Escola de Engenharia
* Departamento de Engenharia de Estruturas
* 
* Author's email :    insane@dees.ufmg.br
* Author's website :  http://www.dees.ufmg.br/insane
* 
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
* 
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* 
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/
package br.ufmg.dees.insane.ui.rich.learn.learn_view.model_view.command;

import java.util.ArrayList;
import java.util.ListIterator;

import javax.swing.JButton;

import br.ufmg.dees.insane.ui.rich.learn.learn_view.command.Command;
import br.ufmg.dees.insane.ui.rich.learn.learn_view.dialog.MatrixViewTable;
import br.ufmg.dees.insane.ui.rich.learn.learn_view.dialog.MatrixViewTableDialog;

/**
*
* @author Moreira, Renata & Pitangueira, Roque
* @since May 2005
*/
public class ForcesDecompositionCommand implements Command {
	
	private int column;
	private int row;
	private MatrixViewTableDialog elements;
	private MatrixViewTableDialog model;
	private ArrayList<JButton> buttons = new ArrayList<JButton>();
	MatrixViewTableDialog dlg;
	
	
	public ForcesDecompositionCommand(int i, int j, MatrixViewTableDialog elements, MatrixViewTableDialog model) {
		this.column = j;
		this.row = i;
		this.elements = elements;
		this.model = model;
	}
	
	
	/** Execute method. */
	

	public void execute() {
	  MatrixViewTable m = this.model.getTable(0);
	  int cont =0;
	  String rowName = m.getLineNames()[row];
	  //String colName = m.getColumnNames()[column];
	  String elmRowName;
	  //String elmColName;
	  ListIterator tabs = elements.getTables().listIterator();
			  while(tabs.hasNext()){
			      MatrixViewTable elm = (MatrixViewTable)tabs.next();
			      for (int k = 0; k<elm.getNRows(); k++)
			    	  for (int l = 0; l<1; l++){
			    		  elmRowName = elm.getLineNames()[k];
			      		  //elmColName = elm.getColumnNames()[l];
			      		  if(rowName.equals(elmRowName)){
			      			JButton buttonLabel = new JButton(elm.getCells()[k][l].getText());
			      			buttonLabel.setBackground(elm.getCells()[k][l].getBackground()) ;
			      			buttonLabel.setText(buttonLabel.getText()+"[of element "+elm.getName()+"] +");
			      			this.buttons.add(cont, buttonLabel);
			      			cont++; 
			      		  }
			    	  }
			  }
			  JButton modelButton = new JButton(m.getCells()[row][column].getText());
		      modelButton.setBackground(m.getCells()[row][column].getBackground());
		      modelButton.setText(" = " +modelButton.getText());
		      this.buttons.add(cont, modelButton);
		      dlg = new MatrixViewTableDialog("Stiffness Decomposition", buttons.size());
		      String[] colNames = new String[1];
		      for(int n=0; n<colNames.length; n++){
					colNames[n] = "";}
		      dlg.addOutputTable( "Equation = ["+rowName+"][1]" ,colNames, buttons);
			  dlg.showDialog();
			  buttons.clear();
		  }
	  
	
//*****************************************************************************
	
	/** Impossible to undo - not implemented. */
	public void undo() {
	}
	
//*****************************************************************************
	
	/** Impossible to redo - not implemented. */
	public void redo() {
	}

	
//*****************************************************************************


}
